One known technique for conveying information within computer systems, especially asynchronous computers, is through the use of "events," where the occurrence of predetermined conditions constitute the event. For example, where the predetermined conditions are the transition on a signal line from one state (such as a voltage level) to another state ("transition signalling"), each change in state of the signal would constitute an event. If a system uses a single conductor for transmission of events, an event is indicated by the change in state on that conductor. For example, a change in state could be indicated when the voltage on the conductor is either raised or lowered from its previous condition. The resulting edge, rising or falling, denotes the occurrence of an event. For example, the conductor may be initially at a low potential, such as 0 volts. If a potential source then is switchably coupled to the conductor, the potential of the conductor changes to a different potential, signalling an event. When the potential source is disconnected, the conductor returns to its 0 volt state, signalling another event. The rising edge and the falling edge both designate the occurrence of events. In other systems, an event might be indicated by only the falling edges or only the rising edges.
Whatever the predetermined conditions are, there are several logic components that are commonly found in event-driven systems. Once such logic component is a "selector." The nodes of a selector comprise two or more outputs, an event input and a control input. The selector is used to steer an event from the event input to one of the outputs, where the particular output depends on the state of a control signal applied to the control input. For example, with a binary selector, an event presented on an event input to a selector circuit is steered to one of two outputs for that selector circuit, depending upon the state of a binary control signal applied to the control input of the selector circuit. If the control signal is in a first binary state, then the input event to the selector will cause an output event on one output, and if the control signal is in the other binary state, then the input event will cause an output event on the other output.
The general functionality of selector circuits is well known. See, for example, U.S. Pat. No. 5,742,182, issued to Sutherland and assigned to the assignee of the present application, which is incorporated herein by reference for all purposes (hereinafter referred to as "Sutherland"). The selector circuit described therein is useful for many applications, but often a circuit design is constrained to require a high-speed response from a selector and is constrained to a low component count.
As with many circuits employing selectors, speed and chip area are at a premium. This invention provides an improved selector circuit, for high-speed and low component count uses as well as improvements in speed and chip area usage.